import { get, post, put, del ,baseUrl } from '../common/utils/request';

// 先修复 getAllPost 函数，添加 return
const getAllPosts = async (pageNum,pageSize) => {
  try {
    const response = await get(`/api/post/getAllPosts/${pageNum}/${pageSize}`);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};

const getPostById = async (postId,userId) => {
  try {
    const response = await get(`/api/post/getPostById/${postId}`);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};

const getCommentsByPostId = async (postId) => {
  try {
    const response = await get(`/api/comment/getCommentsByPostId/${postId}`);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};

const getCommentsByRootId = async (rootId) => {
  try {
    const response = await get(`/api/comment/getCommentsByRootId/${rootId}`);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};

const addPost = async (postData) => {
  try {
    // 从 postData 中获取 userId，作为路径参数
    const userId = postData.userId || '';
    const response = await post(`/api/post/addPost/${userId}`, postData);
    // 返回完整的响应对象，包含 code 和 data
    // 即使 data 为 null，只要 code 为 200 也表示成功
    return response.data;
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};

const addComment = async (comment) => {
  try {
    const response = await post(`/api/comment/addComment`,comment);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};
const uploadImage = (tempFilePath) => {
	const token = uni.getStorageSync('token');
	const retoken = uni.getStorageSync('retoken');
  return new Promise((resolve, reject) => {
    uni.uploadFile({
      // 直接使用 baseUrl + 接口路径（无需 getBaseUrl()）
      url: `${baseUrl}/api/post/updateAvatar`, 
      filePath: tempFilePath,
      name: 'file', // 和后端 @RequestParam("file") 一致
	  header:{
	  		  authorization: 'Bearer ' + token,
	  		  retoken : 'Bearer ' + retoken
	  },
      success: (res) => {
		  console.log(res.data)
        try {
          const result = JSON.parse(res.data);
          // 后端 ResultMessage 格式：{code:200, data:"图片URL", message:"成功"}
          if (result.code === 200 && result.data) {
            resolve(result.data); // 返回图片URL
          } else {
            reject(new Error(result.message || '图片上传失败'));
          }
        } catch (e) {
          reject(new Error('图片上传响应解析失败'));
        }
      },
      fail: (err) => {
        reject(new Error(`上传接口调用失败: ${err.errMsg}`));
      }
    });
  });
};

const selectPostFavorites = async (userId) => {
  try {
    const response = await get(`/api/post/favorite/selectPostFavorites`);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};
const addFavorite = async (favoriteVo) => {
  try {
    const response = await post(`/api/post/favorite/addFavorite`,favoriteVo);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};
const deleteFavorite = async (favoriteVo) => {
  try {
    const response = await del(`/api/post/favorite/deleteFavorite`,favoriteVo);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};
const getPostByUserId = async (userId) => {
  try {
    const response = await get(`/api/post/getPostByUserId`);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};

const deletePost = async (postId) => {
  try {
    const response = await del(`/api/post/deletePost/${postId}`);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};
const getMessageRemindingByreceiverId = async () => {
  try {
    const response = await get(`/api/post/messageReminding/getMessageRemindingByReceiverId`);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};
const postLike = async (postId) => {
  try {
    const response = await put(`/api/post/like/${postId}`);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};
const commentLike = async (commentId) => {
  try {
    const response = await put(`/api/comment/like/${commentId}`);
    return response.data.data; // 返回接口数据
  } catch (error) {
    console.error('请求失败:', error);
    return null; // 错误时返回 null 或默认值
  }
};
export { getAllPosts,getPostById,getCommentsByPostId,
getCommentsByRootId,addPost,addComment,uploadImage,
selectPostFavorites,response,addFavorite,deleteFavorite,
 getPostByUserId,deletePost,getMessageRemindingByreceiverId,
 postLike,commentLike};